サイトへのアクセスが時々重くなる件 その5 完結

アラートは来なかったけど、原因はわかったね。

いつも名古屋バーチャルオフィスコワーキングスペースレンタルオフィス会議室ご利用ありがとうございます。

技術担当のTです。

前回、何かのきっかけの何かって何なのさ! で負荷が高くなった際にアラートメールと負荷警告メールが届くようにスクリプトを仕込みました。

しかし!

アラートメールが来た瞬間にシェルでアクセスしても、すでに負荷が低くなっていたり、負荷警告は配信の遅延が起きたりでなかなかリアルタイムで現象を掴むことができませんでした。

このことから推測できるのは、一瞬のうちにメモリを食い尽くすような現象が発生しているということ。例えば、いきなりサイトへ複数の箇所から同時にアクセスされたりすれば起きそうです。(DoSだったらもっと酷いことになっているので除外します)

そして、ようやく犯人が判明しました。
犯人。。。Twitterでした。

実は、弊社では6月頃からTwitterの運用を始めたのですが、最初の頃はツイート自体も週に1回程度だったのですが、9月ごろからツイートの数を増やし始め最近では毎日のようにツイートしています。

ツイートまでの流れは、

  1. リンクスのブログを作成して公開
  2. Twitterにリンク付きでツイート
  3. Facebookにリンク付きで投稿

で行っています。

この2番のリンク付きでツイートがきっかけでした。Twitterにリンク付きで投稿するとサムネイルを作成するためにリンク先にアクセスされることは知っていました。ただ、その際は対象ページへのアクセスが1、2回あるだけだったので問題ありませんでした。

しかし、ツイートを確認する際にプロフィールから確認をすると、、、推測ですが過去のツイートについてもアクセスを行うようです。並列で。←ここが重要

下記はその際のアクセスログです。

192.133.77.18 - - [13/Oct/2022:01:04:23 +0900] "GET /?p=5552 HTTP/1.1" 200 946 "-" "Twitterbot/1.0"
192.133.77.17 - - [13/Oct/2022:01:04:23 +0900] "GET /virtual-office/about-vto.html HTTP/1.1" 200 342 "-" "Twitterbot/1.0"
192.133.77.16 - - [13/Oct/2022:01:04:23 +0900] "GET /?p=5453 HTTP/1.1" 200 810 "-" "Twitterbot/1.0"
192.133.77.17 - - [13/Oct/2022:01:04:23 +0900] "GET /?p=5705 HTTP/1.1" 200 803 "-" "Twitterbot/1.0"
192.133.77.18 - - [13/Oct/2022:01:04:23 +0900] "GET /?p=5572 HTTP/1.1" 200 363 "-" "Twitterbot/1.0"
192.133.77.17 - - [13/Oct/2022:01:04:24 +0900] "GET /?p=5819 HTTP/1.1" 200 765 "-" "Twitterbot/1.0"
192.133.77.15 - - [13/Oct/2022:01:04:24 +0900] "GET /?p=5423 HTTP/1.1" 200 828 "-" "Twitterbot/1.0"
192.133.77.15 - - [13/Oct/2022:01:04:25 +0900] "GET /?p=5408 HTTP/1.1" 200 441 "-" "Twitterbot/1.0"
192.133.77.15 - - [13/Oct/2022:01:04:25 +0900] "GET /?p=5658 HTTP/1.1" 200 411 "-" "Twitterbot/1.0"
192.133.77.15 - - [13/Oct/2022:01:04:25 +0900] "GET /?p=5467 HTTP/1.1" 200 730 "-" "Twitterbot/1.0"
192.133.77.15 - - [13/Oct/2022:01:04:26 +0900] "GET /?p=5796 HTTP/1.1" 200 807 "-" "Twitterbot/1.0"
192.133.77.16 - - [13/Oct/2022:01:04:28 +0900] "GET /?p=5878 HTTP/1.1" 200 860 "-" "Twitterbot/1.0"
192.133.77.16 - - [13/Oct/2022:01:04:29 +0900] "GET /virtual-office/index.html HTTP/1.1" 200 817 "-" "Twitterbot/1.0"
192.133.77.14 - - [13/Oct/2022:01:04:28 +0900] "GET /?p=5727 HTTP/1.1" 200 910 "-" "Twitterbot/1.0"
192.133.77.14 - - [13/Oct/2022:01:04:28 +0900] "GET /?p=5536 HTTP/1.1" 200 795 "-" "Twitterbot/1.0"

はい。ほぼ同時に5箇所のIPアドレスからTwitterbot/1.0によるアクセスが発生しています。15人から同時にアクセスされたのと同じです。そして、弊社の現在のサーバはそこまで想定しておりません。(というか、別の理由でサーバ移転の準備中です)

結果として、httpdのスレッド及びphpのプロセスが一気に立ち上がりメモリを食い尽くす現象が発生しました。

はい。そこで詳しい方は突っ込むところです。「設定、間違ってね?」
その通りです。本来は、搭載しているメモリやCPUのコア数に基づいてパフォーマンス調整をするため、メモリを食い尽くす前に503エラーを返してサーバダウンを防ぐようになっているはずです。

で、設定見てみました。ほぼデフォルトのままじゃん。しかもサーバのメモリとCPUの数が倍以上の想定になっとる。やれやれ。
*どうやらサイトを構築した後にサーバのスペックを落としたようです。(私じゃ無いですよ。念の為言っておきますが)

まあ、サーバの移転も決まっているので、とりあえず設定を調整して様子見ることにします。

教訓
サーバのスペックを落とすときはConfigも変えましょう

ということで、無事に??解決しました。

技術担当T の紹介

名古屋栄のビジネスリンクス名古屋で、バーチャルオフィス、コワーキングスペース、レンタルオフィス、会議室に関わる技術的なことを担当しています。また、SEO対策やWebサイト制作・運営、サーバメンテナンス等インターネット上の技術的な部分も担当しています。

Twitter:blinks_nagoya
Youtube:businesslinksnagoya
Facebook:b.links.nagoya

PAGE TOP